Competitive gaming (eSports) is a rapidly developing industry. The viewing of others playing video games or competing in video game tournaments is also quickly becoming a pastime among the video gaming community. These viewings can be categorized into either in person, live video game streaming, or video on demand (VOD). Most live video game streaming and video game VOD services utilize video streaming systems similar to those utilized within traditional video streaming services.
Video streaming refers to the process of delivering video content to viewers. As an alternative to traditional downloading, video streaming allows the viewers to start watching the video without the need to download an entire piece of content. During video streaming, video content stored on a server is continuously sent to a viewer's playback device over a network during playback. Typically, the playback device stores a sufficient quantity of video content in a buffer at any given time during playback to prevent disruption of playback due to the playback device completing playback of all the buffered video content prior to receipt of the next portion of video content.
Video streaming solutions typically utilize either Hypertext Transfer Protocol (HTTP), published by the Internet Engineering Task Force and the World Wide Web Consortium as RFC 2540, or Real Time Streaming Protocol (RTSP), published by the Internet Engineering Task Force as RFC 2326, to stream video content between a server and a playback device. HTTP is a stateless protocol that enables a playback device to request a byte range within a file. HTTP is described as stateless, because the server is not required to record information concerning the state of the playback device requesting information or the byte ranges requested by the playback device in order to respond to requests received from the playback device. RTSP is a network control protocol used to control streaming media servers. Playback devices issue control commands, such as (but not limited to) “play” and “pause”, to the server streaming the media to control the playback of media files. When RTSP is utilized, the media server records the state of each client device and determines the media to stream based upon the instructions received from the client devices and the client's state. Adaptive bit rate streaming or adaptive streaming involves detecting the present streaming conditions (e.g. the user's network bandwidth and CPU capacity) in real time and adjusting the quality of the streamed media accordingly. Typically, the source media is encoded at multiple bit rates and the playback device or client switches between streaming the different encodings depending on available resources.
Video game streams are typically encoded and transmitted using similar techniques employed for the streaming of other types of video content. Specifically, the video content can be encoded in accordance with the H.264/MPEG-4 AVC standard, developed by ITU-T Video Coding Experts Group (VCEG) together with the ISO/IEC JTC1 Moving Picture Experts Group (MPEG), and placed in a media container (MP4, MKV, AVI, and so on). Nevertheless, video streaming and video game streaming differ in several aspects. In traditional video streaming systems, the video content is a set of images typically captured by a camera. On the other hand, video content from video game streams are typically produced by a video game system, such as (but not limited to) a personal computer or video game console system.
Modern video games typically utilize two-dimensional or three-dimensional graphics. Rendering these computer graphics can require considerable computing power. Graphical processing units (GPUs) or central processing units (CPUs) can be used to provide additional graphical computational power to render videos from game applications. Rendering videos from game applications typically includes taking geometric, light, color, and/or positional information from the game applications to create a set of images. The images can be displayed at a predetermined frame rate (i.e. frames per second (fps)). The images can also be encoded for streaming. A playback device can download and decode the encoded images. The playback device can display the decoded images at the predetermined frame rate to generate a video sequence.
A technique for streaming video game content is illustrated in FIG. 1. The streaming system 100 can include a streaming source system 102, which is typically the video gamer's computer system. The streaming source system 102 can include a game application 104 that sends GPU commands to a GPU 106. The GPU 106 can process the GPU commands to render images, which can be simultaneously displayed onto the streaming source system display 108 and encoded by a video encoder 110. In some streaming systems, the images can be encoded by a video encoder in a system separate from the streaming source system. The encoded images can be sent over a network 112 and stored on a server 114. The viewer's playback device 116 continuously streams the video content from the hosting server 114 and processes the video content through a rendering engine application 118. The rendering engine application 118 uses a video decoder 120 to decode the encoded images and displays the rendered images through a display 122.